package com.wb.core11IO;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 黄衡熙
 * @version 1.0
 */
public class Test05_获取子目录所有文档 {
    public static List<File> getAllFiles(String directoryPath) {
        List<File> fileList = new ArrayList<>();
        File directory = new File(directoryPath);

        // 检查目录是否存在且是一个有效的目录
        if (!directory.exists() || !directory.isDirectory()) {
            System.out.println("目录不存在或不是有效的目录");
            return fileList;
        }

        // 递归遍历目录
        scanDirectory(directory, fileList);
        return fileList;
    }

    // 递归扫描目录的辅助方法
    private static void scanDirectory(File directory, List<File> fileList) {
        // 获取目录中的所有文件和子目录
        File[] files = directory.listFiles();

        if (files != null) {
            for (File file : files) {
                if (file.isFile()) {
                    // 如果是文件，添加到列表
                    fileList.add(file);
                } else if (file.isDirectory()) {
                    // 如果是目录，递归扫描
                    scanDirectory(file, fileList);
                }
            }
        }
    }

    public static void main(String[] args) {
        // 示例：获取当前项目根目录下的所有文件
        String directoryPath = "D:\\Desktop\\网博\\测试文档";
        List<File> allFiles = getAllFiles(directoryPath);

        // 打印结果
        System.out.println("找到 " + allFiles.size() + " 个文件：");
        for (File file : allFiles) {
            System.out.println(file.getAbsolutePath());
        }
    }
}
